perm filename PLTF80[MSS,LCS]1 blob
sn#100920 filedate 1974-05-08 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002
C00007 ENDMK
C⊗;
TITLE PLTF80 -- FORTRAN PLOT ROUTINES FOR FR-80 OUTPUT
COMMENT ⊗
APLOT(X,Y,UPDOWN) ← IF UPDOWN=0 THEN AIVECT(X,Y) ELSE AVECT(X,Y)
OUTCMD(CMD) outputs the rightmost 18 bits on channel 17
OUTCML(CMDL) does outcmd on successive words starting at
CMDL until a negative word is seen.
FR80GO(FID,EXT,DEV) initializes FR80 output on the named file
on channel 17.
FR80QUIT causes an "end of job" command, closes output on the fr80 file,
& releases channel 17.
⊗
INTERNAL APLOT,OUTCMD,OUTCML,FR80GO,FR80QUIT
ARG← 16
CMD ← 0
A ← 1
B ← 2
C ← 3
XC ←← 0 ;X COORD
YC ←← 1 ;Y COORD
UPDOWN ←← 2; =0 IF PEN IS UP
DEFINE VLC(A,B) = < 200000+A*1000+B>
DEFINE CHKP(A,B) = < A*4000+B>
APLOT: 0 ;BECAUSE OF BLECHEROUS FORTRAN CALL
MOVE CMD,XC(ARG)
IMUL CMD,SCALEF ;SCALE IT
ANDI CMD,37777 ;TRUNCATE IT
SKIPE @UPDOWN(ARG) ;ZERO MEANS PEN UP
TROA CMD,400000 ;AN AVECT X-PART
TRO CMD,100000 ;AN AIVECT X-PART
JSA ARG,OUTCMD ;PUT IT OUT
JUMP CMD
MOVE CMD,YC(ARG) ;
IMUL CMD,SCALEF ;Y COORD
ANDI CMD,37777 ;
TRO CMD,40000 ;SAY THE Y BIT IS ON
JSA ARG,OUTCMD ;PUT IT OUT
JUMP CMD
JRA ARG,3(ARG) ;RETURN
OUTCML: 0 ;PUTS OUT A WHOLE LIST (-1) TERMINATES
MOVEI A,@(ARG) ;PICK UP POINTER TO LIST
OCML.X: SKIPGE (A) ;IS IT VALID
JRA ARG,1(ARG) ;NO--RETURN
JSA ARG,OUTCMD ;
JUMP (A) ;A POINTS AT A GOOD ONE
AOJA A,OCML.X ;GO BACK
OUTCMD: 0 ;FORTRAN CALL FOR ONE CMD
MOVE CMD,@(ARG)
OUT.XX: SOSG FR80+2 ;ANY LEFT IN THIS BUFFER??
JRST .+3
IDPB CMD,FR80+1 ;
JRA ARG,1(ARG) ;RETURN
OUT 17,
JRST .-3 ;NOW PUT THINGS OUT
OUTSTR [ASCIZ /OUTPUT ERROR ON CHANNEL 17 (FR80)/]
HALT 1(ARG)
DEV ←← 0 ;SIXBIT DEVICE
FID ←← 1 ;SIXBIT FILEID
EXT ←← 2
FR80: 0 ;BUFFER HEADER
0
0
FR80FI: 0 ;LOOKUP BLOCK
FR80EX: 0
0
0
FR80BK: 0 ;OPEN BLOCK
FR80DV: 0
XWD FR80,0
FR80GO: 0
SKIPN A,@DEV(ARG)
MOVEI A,'DSK'
MOVEM A,FR80DV
OPEN 17,FR80BK
JRST [ OUTSTR [ASCIZ /OPEN FAILED FOR FR80 OUTPUT (CHANNEL 17)/]
HALT 3(ARG)] ;RETURN
OUTBUF 17,6 ;GET SOME BUFFERS
MOVEI A,(<POINT =18,0>)
MOVEM A,FR80+1 ;MUNCH BYTE COUNT
SKIPN A,@FID(ARG)
MOVE A,[SIXBIT /FR80/]
MOVEM A,FR80FI
SKIPN A,@EXT(ARG)
MOVEI A,'F80'
HLLZM A,FR80EX
ENTER A,FR80FI ;ENTER
JRST [ OUTSTR [ASCIZ /ENTER FAILED ON FR80 OUTPUT FILE/]
HALT 3(ARG)] ;JUST RETURN
JSA ARG,OUTCMD
JUMP [ CHKP(4,1740)] ;START JOB, RESET FRAME CNT,RESET, ETC
;WHEN GET TEXT OUTPUT WORKING, MAY WANT TO
;PUT OUT A JOBID
JSA ARG,OUTCML
JUMP [ VLC(16,0) ;SOLID LINES
VLC(21,1) ;35MM UNSPROCKETED CAMERA, "COMIC" MODE
-1 ;END OF LIST FLAG
]
JRA ARG,3(ARG) ;RETURN
FR80QUIT: 0
JSA ARG,OUTCML
JUMP [ CHKP(7,1) ;FRAME ADVANCE
CHKP(1,17) ;END JOB, PAUSE LEVEL=17
-1
]
RELEASE 17,
JRA ARG,(ARG)
SCALEF: 2 ;SCALE FACTOR (I THINK THIS WILL BE RIGHT THING)
END